switch 语句

在Java中,switch语句用于进行多重选择。它可以根据表达式的值来执行不同的代码块。

switch语句的基本结构如下:

switch (expression) {
    case value1:
        // 当 expression 的值等于 value1 时执行的代码
        break;
    case value2:
        // 当 expression 的值等于 value2 时执行的代码
        break;
    ...
    default:
        // 当 expression 的值都不匹配上述情况时执行的代码
}

以下是一些关于switch语句的注意事项:

以下是一个简单的示例,演示了switch语句的使用:

int day = 3;

switch (day) {
    case 1:
        System.out.println("星期一");
        break;
    case 2:
        System.out.println("星期二");
        break;
    case 3:
        System.out.println("星期三");
        break;
    default:
        System.out.println("其他");
}

输出结果为:"星期三"。

在这个示例中,根据day的值,switch语句选择了与之匹配的代码块进行执行。由于day的值是3,所以执行了第三个case块中的代码,并且没有继续执行后面的代码。

switch 表达式

switch表达式是Java 14及更高版本中引入的新特性。它允许我们在switch语句中使用表达式作为条件,而不仅限于传统的整数或枚举类型。

switch表达式的基本结构如下:

int result = switch (expression) {
    case value1 -> expression1;
    case value2 -> expression2;
    // ...
    default -> expressionN;
};

其中,expression是要进行匹配的值,value1, value2, ...是可能的值列表,->后面是与每个值相关联的表达式。

注意事项:

以下是一个示例,演示了如何使用switch表达式:

public class SwitchExpressionExample {
    public static void main(String[] args) {
        int dayOfWeek = 3;

        String dayType = switch (dayOfWeek) {
            case 1, 2, 3, 4, 5 -> "Weekday";
            case 6, 7 -> "Weekend";
            default -> "Invalid day";
        };

        System.out.println("Day type: " + dayType);
    }
}

在这个示例中,根据dayOfWeek的值,我们使用switch表达式判断是工作日还是周末,并将结果存储在dayType变量中。最后,我们打印出dayType的值。

### yield

大多数时候,在switch表达式内部,我们会返回简单的值。

但是,如果需要复杂的语句,我们也可以写很多语句,放到{...}里,然后,用yield返回一个值作为switch语句的返回值:

	public class Main {
    public static void main(String[] args) {
        String fruit = "orange";
        int opt = switch (fruit) {
            case "apple" -> 1;
            case "pear", "mango" -> 2;
            default -> {
                int code = fruit.hashCode();
                yield code; // switch语句返回值
            }
        };
        System.out.println("opt = " + opt);
    }
}